window: Stop implementing pick
authorMatthias Clasen <mclasen@redhat.com>
Sun, 7 Apr 2019 16:11:20 +0000 (16:11 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 7 Apr 2019 16:11:20 +0000 (16:11 +0000)
Treat popovers as a special-case for now.

gtk/gtkwidget.c
gtk/gtkwindow.c
gtk/gtkwindowprivate.h

index 2e6602c0ce7fe28e6fc17b044b5d9375fe40c7d6..694217fadff7a4ad28893fea15703dc867fa4331 100644 (file)
@@ -11106,6 +11106,15 @@ gtk_widget_pick (GtkWidget *widget,
       break;
     }
 
+  if (GTK_IS_WINDOW (widget))
+    {
+      GtkWidget *picked;
+
+      picked = gtk_window_pick_popover (GTK_WINDOW (widget), x, y);
+      if (picked)
+        return picked;
+    }
+
   return GTK_WIDGET_GET_CLASS (widget)->pick (widget, x, y);
 }
 
index 650eac6c3b2f9d7b2b3530e99228b2de2d461b9c..ab7dc0419aa4bc2a8bb7a709da9ec61a523bc705 100644 (file)
@@ -735,12 +735,11 @@ static void popover_get_rect (GtkWindowPopover      *popover,
                               GtkWindow             *window,
                               cairo_rectangle_int_t *rect);
 
-static GtkWidget *
-gtk_window_pick (GtkWidget *widget,
-                 gdouble    x,
-                 gdouble    y)
+GtkWidget *
+gtk_window_pick_popover (GtkWindow *window,
+                         double     x,
+                         double     y)
 {
-  GtkWindow *window = GTK_WINDOW (widget);
   GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
   GList *popovers;
 
@@ -750,7 +749,7 @@ gtk_window_pick (GtkWidget *widget,
       int dest_x, dest_y;
       GtkWidget *picked;
 
-      gtk_widget_translate_coordinates (widget, popover->widget,
+      gtk_widget_translate_coordinates (GTK_WIDGET (window), popover->widget,
                                         x, y,
                                         &dest_x, &dest_y);
 
@@ -759,7 +758,7 @@ gtk_window_pick (GtkWidget *widget,
         return picked;
     }
 
-  return GTK_WIDGET_CLASS (gtk_window_parent_class)->pick (widget, x, y);
+  return NULL;
 }
 
 static void
@@ -801,7 +800,6 @@ gtk_window_class_init (GtkWindowClass *klass)
   widget_class->state_flags_changed = gtk_window_state_flags_changed;
   widget_class->style_updated = gtk_window_style_updated;
   widget_class->snapshot = gtk_window_snapshot;
-  widget_class->pick = gtk_window_pick;
 
   container_class->add = gtk_window_add;
   container_class->remove = gtk_window_remove;
index de0c853f77669be553a082af642e579e0ab68c12..67e3973c10ace34f41f68a99bdbeb95dfba555a4 100644 (file)
@@ -162,6 +162,9 @@ void             gtk_window_maybe_revoke_implicit_grab (GtkWindow *window,
 void             gtk_window_maybe_update_cursor (GtkWindow *window,
                                                  GtkWidget *widget,
                                                  GdkDevice *device);
+GtkWidget *      gtk_window_pick_popover (GtkWindow *window,
+                                          double     x,
+                                          double     y);
 
 G_END_DECLS